﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;

namespace Zzva.Common
{
    public class TLog
    {
        private  const string LogFileName = "Log.txt";


        protected TLog() { }


        private static void CreateLogFile()
        {
            try
            {
                string NameObject;
                bool FindTextListener;

                FindTextListener = false;

                foreach (TraceListener Listener in Trace.Listeners)
                {
                    NameObject = Listener.GetType().Name;
                    if (NameObject == "TextWriterTraceListener")
                    {
                        FindTextListener = true;
                        break;
                    }
                }


                if (FindTextListener == false)//создаем, это первое обращение
                {
                    System.IO.FileStream Log = new System.IO.FileStream(LogFileName, System.IO.FileMode.Create);
                    TextWriterTraceListener TextListener = new TextWriterTraceListener(Log);
                    Trace.Listeners.Add(TextListener);
                    Trace.AutoFlush = true;
                }
            }

            catch (Exception e) { throw e; }
            finally { }
        }



        //открыть лог файл программой по умолчанию
        public static void View()
        {
            try
            {
                CreateLogFile();
                Process.Start(LogFileName);
            }

            catch (Exception e) { throw e; }
            finally { }
        }


        //заменить текстовый файл для логирования на чистый или создать
        public static void Reset()
        {
            try
            {
                string NameObject;

                foreach (TraceListener Listener in Trace.Listeners)
                {
                    NameObject = Listener.GetType().Name;
                    if (NameObject == "TextWriterTraceListener")
                    {
                        Trace.Listeners.Remove(Listener);
                        Listener.Close();
                        break;
                    }
                }
            }

            catch (Exception e) { throw e; }
            finally { }
        }


        //записать строку в лог-файл
        public static void Write(string Category,string Message)
        {
            try
            {
                CreateLogFile();
                Trace.WriteLine(Message, Category);
            }

            catch (Exception e) { throw e; }
            finally { }
        }



    }
}
